/*@Source

Problem Id:2606  User Id:Latex 
Memory:872K  Time:732MS
Language:C++  Result:Accepted

Source 
*/
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>

#define MAX 210
#define MAXVALUE 1E20

struct K
{
	double k;
	double b;
}rabbit[MAX][MAX];

int n;
double x[MAX],y[MAX];
int count[MAX][MAX];

int main()
{
	int i,j,z;
	int max;
	double temp;

	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%lf %lf",&x[i],&y[i]);
	}

	for(i=1;i<=n-1;i++)
	{
		for(j=i+1;j<=n;j++)
		{
			if(fabs(x[i]-x[j])<1E-6)
			{
				rabbit[i][j].k=MAXVALUE;
				rabbit[i][j].b=MAXVALUE;
				rabbit[j][i].k=MAXVALUE;
				rabbit[j][i].b=MAXVALUE;
			}
			else
			{
				rabbit[i][j].k=(y[i]-y[j])/(x[i]-x[j]);
				rabbit[i][j].b=(x[i]*y[j] - x[j]*y[i]) / (x[i]-x[j]);
				rabbit[j][i].k=rabbit[i][j].k;
				rabbit[j][i].b=rabbit[i][j].b;
			}
		}
	}


	for(i=1;i<=n-1;i++)
	{
		for(j=i+1;j<=n;j++)
		{
			count[i][j]=2;
			for(z=1;z<=n;z++)
			{
				if(i!=j && i!=z && j!=z)
				{
					temp=y[z] - x[z]*rabbit[i][j].k;
					if(fabs(temp-rabbit[i][j].b)<1E-6)
					{
						count[i][j]++;
					}
				}
			}
		}
	}

	max=0;
	for(i=1;i<=n;i++)
	{
		for(j=i+1;j<=n;j++)
		{
			if(max<count[i][j])
				max=count[i][j];
		}
	}


	printf("%d\n",max);

	return 0;
}


